/*
Given an array of integers sorted in ascending order, find the starting and ending position of a given target value.

Your algorithm's runtime complexity must be in the order of O(log n).

If the target is not found in the array, return [-1, -1].

For example,
Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].
 */
package search_for_a_range

import "sort"

func searchRange(nums []int, target int) []int {
	l := len(nums)
	i1 := sort.SearchInts(nums, target)
	if i1 >= l || nums[i1] != target {
		return []int{-1, -1}
	}
	i2 := sort.SearchInts(nums[i1:], target+1)
	return []int{i1, i2 + i1 - 1}
}
